package com.thinkTank.oa.lucene;

import java.util.List;

public interface IsolrOperation<T> {
	public boolean add(String target,List<T> object);
	
	/***
	 * @author dq
	 * @date 2018-09-20
	 * 自动匹配功能
	 * @param matchType 匹配类型 
	 * 1 专家匹配需求 2 客户匹配需求 3客户匹配项目 4 项目匹配需求 5 项目匹配客户 6 需求匹配项目 7 需求匹配专家
	 * @param objectId 匹配的对象ID  例如: 专家匹配需求 就把专家ID传进来
	 * @return
	 */
	public Pagination queryList(int page,int size,Integer matchType,String objectId);
	
	/***
	 * 根据关键字检索相关对象
	 * @date 2018-10-24
	 * @author dq
	 * @param page
	 * @param size
	 * @param searchType
	 * @param keyWords
	 * @return
	 */
	public Pagination luceneSearch(int page,int size,Integer searchType,String keyWords);
	/***
	 * 更新索引
	 * @param target 更新哪个索引  person,project等
	 * @param object 例如 如果更新 person  需要new 一个 LucenePerson 给里面所有的值赋值，然后传进来
	 * @return
	 */
	public boolean update(String target,T object);
	/*****
	 * @date 2018-09-25
	 * @author dq
	 * 根据参数查询lucene 给出结果集
	 * @param page 当前第几页 
	 * @param size 每页多少行
	 * @param matchType
	 * 匹配类型 
	 * 1 专家匹配需求 2 客户匹配需求 3客户匹配项目 4 项目匹配需求 5 项目匹配客户 6 需求匹配项目 7 需求匹配专家
	 * @param objectId 匹配的对象ID  例如: 专家匹配需求 就把专家ID传进来
	 * @param researchField 领域 比如 生物科学
	 * @param area 查 对象详情的时候 怎么显示的，就怎么传过来
	 * @param keywords 检索关键字
	 * @return
	 */
	 public Pagination queryList(int page,int size,Integer matchType,String objectId,String researchField,String area,String keywords);
}
